package database

import (
	"database/sql"
	_ "github.com/go-sql-driver/mysql"
	"log"
)

var db *sql.DB

// InitDB 初始化数据库连接
func InitDB(dataSourceName string) {
	var err error
	db, err = sql.Open("mysql", dataSourceName)
	if err != nil {
		log.Fatalf("Error opening database: %v", err)
	}

	// 尝试与数据库建立连接（验证dataSourceName是否正确）
	err = db.Ping()
	if err != nil {
		log.Fatalf("Error connecting to the database: %v", err)
	}
}

// CloseDB 关闭数据库连接
func CloseDB() {
	db.Close()
}

// ExecDB 执行Insert、Update、Delete等非查询SQL命令
func ExecDB(query string, args ...interface{}) (sql.Result, error) {
	return db.Exec(query, args...)
}

// QueryDB 查询数据库，返回多行结果
func QueryDB(query string, args ...interface{}) (*sql.Rows, error) {
	return db.Query(query, args...)
}

// QueryRowDB 查询数据库，返回单行结果
func QueryRowDB(query string, args ...interface{}) *sql.Row {
	return db.QueryRow(query, args...)
}
